//
//  CZMainViewController.swift
//  WeiBo
//
//  Created by Apple on 16/9/4.
//  Copyright © 2016年 KY. All rights reserved.
//

import UIKit
import SVProgressHUD

class CZMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //  添加子视图控制器
        //  两种方式
//        addChildViewController(<#T##childController: UIViewController##UIViewController#>)
//        viewControllers
        //  修改文字及图片的选中颜色可以使用，全局设置的方法
        //  越早执行越好，一般会放在appdelegate里面，
//        UITabBar.appearance().tintColor = UIColor.orange
        
        
        //  设置自定义的tabbar视图
        let czTabBar = CZTabBar()
        //  设置代理
        czTabBar.czTabBarDelegate = self
        //  点击撰写按钮执行的闭包
        //  使用self注意循环引用
        czTabBar.composeButtonClosure = { [weak self] in
            //  
            print("我是闭包调用过来的")
            
            if !CZUserAccountViewModel.sharedUserAccount.isLogin {
                //  
                SVProgressHUD.showError(withStatus: "还没有登录呢，亲~")
                return
            }
            
            //  代码到此，添加蒙层，应该添加到tabbarcontroller的视图上
            if self != nil {
                let composeView = CZComposeView()
                //            let window = UIApplication.shared.windows.last!
                //            window.addSubview(composeView)
                composeView.show(target: self!)
            }
            
            
            
            
        }
        //  只读计算属性不能直接设置值，使用kvc
//        self.tabBar = czTabBar
        setValue(czTabBar, forKey: "tabBar")
        
        //  添加不同的视图控制器
        addChildViewController(CZHomeTableViewController(), imageName: "tabbar_home", title: "首页")
        
        addChildViewController(CZMessageTableViewController(), imageName: "tabbar_message_center", title: "消息")
        addChildViewController(CZDiscoverTableViewController(), imageName: "tabbar_discover", title: "发现")
        
        addChildViewController(CZProfileTableViewController(), imageName: "tabbar_profile", title: "我的")
        
    }

    //  添加子视图控制器的方法
    func addChildViewController(_ childController: UIViewController, imageName: String, title: String) {
        //  设置tabbar图片
        childController.tabBarItem.image = UIImage(named: imageName)
        //  修改选中图片的渲染方式，1.直接修改图片的render as为原始图片 2.使用代码的方式修改图片的渲染方式
        //  图片渲染方式在swift3.0改成withRenderMode，swift2.0是imagewithrenderAs
        childController.tabBarItem.selectedImage = UIImage(named: imageName + "_selected")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
//        childController.tabBarItem.selectedImage = UIImage(named: imageName + "_selected")

        
//        //  设置tabbar标题
//        childController.tabBarItem.title = title
//        //  设置导航栏的标题
//        childController.navigationItem.title = title
//        
        
        //  如果标题一样，那么可以合并成一句代码
        childController.title = title
        
        //  设置tabbar标题颜色,设置选中状态的文字颜色为黄色
        childController.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.orange], for: .selected)
        
        //  设置文字大小
        childController.tabBarItem.setTitleTextAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 13)], for: .normal)
        
        //  把视图控制器添加到导航控制器里面
        let nav = CZNavigationViewController(rootViewController: childController)
        
        //  添加子视图控制器
        addChildViewController(nav)
        
        
        
    }
  

}

// MARK:    -实现CZTabBarDelegate代理方法
extension CZMainViewController: CZTabBarDelegate {
    func didSelectedComposeButton() {
        print("我是代理对象调用过来的")
    }
}



















